ইনক্যাপসুলেশন (Encapsulation), ইনহেরিটেন্স (Inheritance) এবং পলিমরফিজম (Polymorphism) অবজেক্ট ওরিয়েন্টেড প্রোগ্রামিং (OOP) এর তিনটি প্রধান বৈশিষ্ট্য, যা প্রোগ্রামিংয়ে পুনঃব্যবহারযোগ্য, সংগঠিত এবং নমনীয় কোড তৈরিতে সাহায্য করে।
ইনক্যাপসুলেশন (Encapsulation)
ইনক্যাপসুলেশন হলো ডেটা এবং মেথডকে একটি ক্লাসের মধ্যে আবদ্ধ করা, যা ডেটাকে বাইরের অবজেক্ট থেকে সরাসরি এক্সেস করা থেকে রক্ষা করে। এর মাধ্যমে ডেটার নিরাপত্তা নিশ্চিত হয় এবং ডেটা শুধুমাত্র ক্লাসের নির্দিষ্ট মেথডের মাধ্যমে এক্সেস করা যায়। প্রাইভেট ও প্রোটেক্টেড ভেরিয়েবল ব্যবহার করে ইনক্যাপসুলেশন কার্যকর করা হয়।
উদাহরণ (Python):
class BankAccount:
def __init__(self, balance):
self.__balance = balance # প্রাইভেট ভেরিয়েবল
def deposit(self, amount):
if amount > 0:
self.__balance += amount
def withdraw(self, amount):
if 0 < amount <= self.__balance:
self.__balance -= amount
def get_balance(self):
return self.__balance
# অবজেক্ট তৈরি
account = BankAccount(1000)
account.deposit(500)
print(account.get_balance()) # আউটপুট: 1500
এখানে, __balance প্রাইভেট ভেরিয়েবল হওয়ার কারণে সরাসরি পরিবর্তন করা যাবে না, শুধুমাত্র deposit, withdraw, এবং get_balance মেথডের মাধ্যমে এক্সেস করা যাবে।
ইনক্যাপসুলেশনের সুবিধা:
- ডেটার নিরাপত্তা নিশ্চিত করে।
- ডেটা এক্সেস নিয়ন্ত্রণে রাখে।
- কোডের মডুলারিটি এবং সংগঠিত কাঠামো বাড়ায়।
ইনহেরিটেন্স (Inheritance)
ইনহেরিটেন্স হলো একটি ক্লাস থেকে আরেকটি ক্লাস তৈরি করা, যাতে মূল ক্লাসের বৈশিষ্ট্য এবং আচরণ নতুন ক্লাসে পাওয়া যায়। মূল ক্লাসকে প্যারেন্ট ক্লাস বা বেস ক্লাস এবং নতুন ক্লাসকে চাইল্ড ক্লাস বা ডেরাইভড ক্লাস বলা হয়। ইনহেরিটেন্সের মাধ্যমে কোডের পুনঃব্যবহারযোগ্যতা বাড়ে এবং নতুন বৈশিষ্ট্য যোগ করা সহজ হয়।
উদাহরণ (Python):
# প্যারেন্ট ক্লাস
class Animal:
def sound(self):
return "Some sound"
# চাইল্ড ক্লাস
class Dog(Animal):
def sound(self):
return "Bark"
# অবজেক্ট তৈরি
dog = Dog()
print(dog.sound()) # আউটপুট: Bark
এখানে, Dog ক্লাস Animal ক্লাস থেকে ইনহেরিট করেছে এবং sound() মেথডটি নিজের মতো করে নতুনভাবে সংজ্ঞায়িত করেছে।
ইনহেরিটেন্সের সুবিধা:
- কোডের পুনঃব্যবহারযোগ্যতা বাড়ায়।
- ক্লাসগুলোর মধ্যে সম্পর্ক তৈরি করে।
- নতুন বৈশিষ্ট্য যোগ করা সহজ করে।
পলিমরফিজম (Polymorphism)
পলিমরফিজম শব্দের অর্থ হলো "বহু-রূপ"। পলিমরফিজমের মাধ্যমে বিভিন্ন অবজেক্টের জন্য একই মেথড ভিন্ন ভিন্ন আকারে ব্যবহার করা যায়। এটি মূলত মেথড ওভাররাইডিং এবং ওভারলোডিংয়ের মাধ্যমে করা হয়। পলিমরফিজমের সাহায্যে একাধিক অবজেক্টকে এক্সেস করতে একই মেথড ব্যবহার করা যায়।
উদাহরণ (Python):
class Cat:
def sound(self):
return "Meow"
class Dog:
def sound(self):
return "Bark"
# পলিমরফিজম উদাহরণ
animals = [Cat(), Dog()]
for animal in animals:
print(animal.sound())
এখানে Cat এবং Dog ক্লাসে sound() মেথড ভিন্ন ভিন্ন কাজ করছে, কিন্তু animal.sound() কল করলে উভয় মেথড ভিন্ন আউটপুট প্রদান করে। এটি পলিমরফিজমের উদাহরণ।
পলিমরফিজমের সুবিধা:
- প্রোগ্রামকে নমনীয় করে।
- কোডের সংক্ষিপ্ততা বাড়ায়।
- বিভিন্ন অবজেক্টকে একই মেথড দিয়ে পরিচালনা করা যায়।
ইনক্যাপসুলেশন, ইনহেরিটেন্স এবং পলিমরফিজমের তুলনা
| বৈশিষ্ট্য | ইনক্যাপসুলেশন | ইনহেরিটেন্স | পলিমরফিজম |
|---|---|---|---|
| কাজ | ডেটা ও মেথডকে একত্রে রাখা ও সুরক্ষা প্রদান | একটি ক্লাস থেকে নতুন ক্লাস তৈরি | একই মেথডকে বিভিন্ন অবজেক্টের জন্য ভিন্নভাবে ব্যবহার |
| উদ্দেশ্য | ডেটা এক্সেস নিয়ন্ত্রণ | কোড পুনঃব্যবহারযোগ্যতা বাড়ানো | প্রোগ্রামে নমনীয়তা ও সংক্ষিপ্ততা বাড়ানো |
| উদাহরণ | প্রাইভেট বা প্রোটেক্টেড ভেরিয়েবল | প্যারেন্ট-চাইল্ড ক্লাস সম্পর্ক | মেথড ওভাররাইডিং ও ওভারলোডিং |
উপসংহার
ইনক্যাপসুলেশন ডেটা নিরাপত্তা ও নিয়ন্ত্রণে সাহায্য করে, ইনহেরিটেন্স কোডের পুনঃব্যবহারযোগ্যতা বাড়ায়, আর পলিমরফিজম প্রোগ্রামে নমনীয়তা ও কার্যকারিতা বৃদ্ধি করে। এই তিনটি বৈশিষ্ট্য মিলে OOP কে একটি শক্তিশালী প্রোগ্রামিং পদ্ধতি হিসেবে গড়ে তোলে, যা বড় প্রজেক্ট ম্যানেজমেন্ট ও ডেটা প্রসেসিং সহজ করে।
Read more